package Day04;

public class Day04 {
    public static void main(String[] args) {
        //scanner
        //在控制台输入(run显示的界面)
        //接收用户输入的数据只是它众多用处之一
        //共三步
        //1 在package下面
        //import java.util.Scanner;(导入扫描仪)
        //2 在main中使用
        //Scanner scan=new Scanner(System.in);(创建一个扫描仪,名叫scan<scan相当于abc等变量名>)
        //3 在第二步下面
        //int age=scan.nextInt();(扫描一个整数,并且赋值给age 表示用户自主输入age的数值)


        //Day03补充(分支结构<下>)
        //switch...case结构:常用于实现多条路
        //优点 效率高,结构清晰
        //缺点 目前只能对整数做判断(也支持String和枚举)
        //只能对整数判断且只能判断相等关系

        //应用场景
        //若业务是对整数判断相等 即输入的整数判断相等后激活数字对应业务服务 则switch为首选
        // 例如电话营业厅提示:...请按1,底层逻辑就是switch...case

        //从不同入口判断 匹配上case后 直接进入该分支 而该分支后续的case都会输出(穿透性),不同路之间需要加break
        //看到break:便会跳出switch 只输出入口中相对应的内容

        //选项case一定不能重复
        //default放在switch中哪里都可以 都是先走其他case 只有都不匹配才会走此路
        //需要注意的是 若default不在最后需要加上(break;)
        //整数范围不包括long 可选范围只有byte short char int String 枚举


        //循环
        //循环的定义
        //任何复杂的程序逻辑 都可以用三个结构实现
        //顺序结构 从上往下逐行执行 每句必走
        //分支结构 有条件的执行某语句一次 并非每句必走(条件只判断一次 语句块最多执行一次)
        //循环结构 有条件的执行某语句多次 并非每句必走(条件判断多次)
           //分支和循环的区别 次数上有区别
        //反复多次执行一段相同或相似的代码(有规律的代码)

        //循环三要素(循环变量很重要)-------------跑三圈 圈数为循环变量 记为count
        //1 循环变量的初始化-------------------声明初始化循环变量 int count=0;
        //2 循环的条件(以循环变量为基础)---------count<3;
        //3 循环变量的改变---------------------count++;0/1/2/ 3(0到2时跑 3时不跑了)
           //循环变量 在整个循环过程中反复变化的数
        //如果第三要素缺失 循环永远结束不了 变成死循环

        //分类
        //1 while结构
        //while(boolean){------判断为true则进入循环
        //    语句块------------循环反复执行的代码
        //}--------------------直到判断为false循环结束

        //java随机数的生成有两种方式
        //1 Math.random()------------范围0.0到0.99999999999999...
        //  *1000--------------------范围0.0到999.999999999999...
        //  +1-----------------------范围1.0到1000.99999999999...
        //  (int)--------------------范围1到1000(强转为整数)
        //最后写为(以num为变量为例):
        int num=(int)(Math.random()*1000+1);
        //max相当于开区间集合 左边能取到 右边取不到 在此基础上变化 比如*1000,+1等取值范围不变


        //2 do...while结构
        //语法:
        //do{------------------------先执行
        // 语句块---------------------反复循环执行的代码
        // }while(boolean);----------再判断 若为true则返回do继续执行

        //while和do...while区别
        //while可能一次都不执行
           //很多时候二者可以互换
        //区别:do...while至少执行一次(我先打你一拳 问你还让我打么 就算不让打了我也已经打了一拳了)
           //当1要素和3要素的代码相同 do...while为首选


        //3 for结构
        //语法:for(){
        // 语句块
        // }

        //特殊情况(考点)
        //第一要素可以放在外面也可以没有(;a;b)
        //第三要素同理(a;b;)
        //也可以没有条件(;;)
        //第一第三要素位置可以有多个条件,此时用逗号表达式
        //第二要素只能有一个条件


        //循环结构的选择
        //1 先看是否与次数有关 有的话直接使用for
        //2 若无关 则看第一第三要素的代码是否相同
           //若相同----------直接选do...while
           //若不同----------直接选while
        // for使用频率很高(与次数有关 实际应用中,大部分循环都与次数有关)


        //Day04补充(VarDemo)
        //变量的作用域/范围
        //从变量的声明开始,一直到包含它最近的大括号结束
        //变量的同名问题
        //for中的循环变量的作用域 仅在当前for中用-------特殊记忆


        //chatGPT
        //AI人工智能
           //准确提供问题方案
           //帮助写基础代码
           //辅助开发工具

        //文心一言---免费










    }
}
